前兩篇的暴力系列看起來非常的有(絕)趣(望),此時我萌生的想法有兩個
dataset的處理LSTM的配置其中,如果想要改變dataset的處理方式,最好的方法就是直接將多餘重複的部分直接去掉。這絕對是一個可行的方式,在之後的兩天內,我應該會使用這個方式試看看。 另一個為什麼提到LSTM的配置呢? 因為我在看RNN的基礎架構的時候,所接收到的是對於time stamp,它可以是「沒有限制」的,那麼為什麼我們在使用LSTM layers的時候,卻是一定要有time stamp的設置? 所以我們今天來稍微踩踩keras-LSTM的坑吧!
Keras 中 Recurrent Layers 種類| 類別 | 繼承 |
|---|---|
| RNN | Layer |
| SimpleRNN | RNN |
| GRU | RNN |
| LSTM | RNN |
| ConvLSTM2D | RNN |
| ConvLSTM2DCell | Layer |
| SimpleRNNCell | Layer |
| GRUCell | Layer |
| LSTMCell | Layer |
| CuDNNGRU | _CuDNNRNN |
| CuDNNLSTM | _CuDNNRNN |
我特別列出繼承的類是因為想要更清楚了解他們底層的運作
RNN類別的特殊功能此為RNN原本的隱藏可選input,由
**kwargs傳入
RNN的state
RNN的reset_states方法透過輸入來更改狀態Attention而設的機制,但細節我不是很清楚其實當初在看這部分的時候就有疑問,為什麼會有分
LSTM和LSTMCell?
time stamp個數喔挖嗚~ 說認真,我原本想要嘗試使用輸入
time stamp為1的LSTM layers來建構我認識的RNN模型,現在看來使用cell好像就可以解決啦?
在tensorflow 1.4 core裡面是這麼描述RNN layers和cell之間的關係的
The cell is the inside of the
forloop of a RNN layer. Wrapping a cell inside atf.keras.layers.RNNlayer gives you a layer capable of processing batches of sequences, e.g.RNN(LSTMCell(10))
也就是說,當你使用Cell建構後,還是可以使用RNN包起來幫你處理整串資料,但這句話也表示了你還是用layers就好吧! 省得麻煩 (~ 是的,我應該接收到了
其實在理解RNN系列的過程滿累的,這次並沒有把坑踩好踩滿,我有查了怎麼建構雙向LSTM、怎麼使用reset_states()、怎麼「跨批次處理」資料,但我認為無法把整理寫得好,今天小提一下並記錄LSTM中的一些細節,之後如果有用到再補上XD
constant
cell